import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

// 获取当前文件的目录路径（ES模块中的 __dirname 替代方案）
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 文件路径
const GET_DEFAULT_PATH = path.join(__dirname, 'default.json');
const FILTER_DEFAULT_PATH = path.join(__dirname, '../filter/default.json');

// 检测是否包含中文字符的函数
function containsChinese(text) {
    if (!text || typeof text !== 'string') {
        return false;
    }
    // 中文字符的Unicode范围
    const chineseRegex = /[\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff\u3000-\u303f]/;
    return chineseRegex.test(text);
}

async function filterChineseTranslations() {
    try {
        console.log('开始过滤包含中文的翻译数据...\n');
        
        // 读取源文件
        console.log('正在读取文件...');
        if (!fs.existsSync(GET_DEFAULT_PATH)) {
            console.error(`❌ 源文件不存在: ${GET_DEFAULT_PATH}`);
            process.exit(1);
        }
        
        const getData = JSON.parse(fs.readFileSync(GET_DEFAULT_PATH, 'utf8'));
        console.log(`✓ 成功读取源文件，共 ${Object.keys(getData).length} 条记录\n`);
        
        // 确保输出目录存在
        const filterDir = path.dirname(FILTER_DEFAULT_PATH);
        if (!fs.existsSync(filterDir)) {
            fs.mkdirSync(filterDir, { recursive: true });
            console.log(`✓ 创建输出目录: ${filterDir}`);
        }
        
        let filteredData = {};
        let filteredCount = 0;
        let totalCount = 0;
        
        // 遍历所有条目
        for (const [chineseKey, item] of Object.entries(getData)) {
            totalCount++;
            
            const enUsValue = item['en-US'];
            
            // 检查 en-US 字段是否包含中文
            if (containsChinese(enUsValue)) {
                filteredData[chineseKey] = item;
                filteredCount++;
                
                console.log(`🔍 发现包含中文的翻译 ID: ${item.$id || '无ID'}`);
                console.log(`   中文: ${chineseKey}`);
                console.log(`   en-US: ${enUsValue}`);
                console.log('');
            }
        }
        
        // 写入过滤后的数据
        if (filteredCount > 0) {
            console.log('正在保存过滤后的文件...');
            fs.writeFileSync(FILTER_DEFAULT_PATH, JSON.stringify(filteredData, null, 4), 'utf8');
            console.log(`✓ 文件保存成功: ${FILTER_DEFAULT_PATH}\n`);
        } else {
            console.log('没有发现包含中文的翻译条目\n');
            // 创建空文件
            fs.writeFileSync(FILTER_DEFAULT_PATH, '{}', 'utf8');
        }
        
        // 输出统计信息
        console.log('='.repeat(50));
        console.log('过滤完成！统计信息：');
        console.log(`🔍 包含中文的条目: ${filteredCount} 条`);
        console.log(`📊 总处理条目: ${totalCount} 条`);
        console.log(`📁 输出文件: ${FILTER_DEFAULT_PATH}`);
        console.log('='.repeat(50));
        
        // 如果有包含中文的条目，显示百分比
        if (totalCount > 0) {
            const percentage = ((filteredCount / totalCount) * 100).toFixed(2);
            console.log(`📈 包含中文比例: ${percentage}%`);
        }
        
    } catch (error) {
        console.error('❌ 过滤过程中发生错误:', error.message);
        console.error(error.stack);
        process.exit(1);
    }
}

// 执行过滤
filterChineseTranslations(); 